using System.Collections.Generic;
using System.Windows.Forms;
namespace cli
{
    /// <summary>
    /// Main interface for a check list item
    /// </summary>
    public interface ICheckListItem
    {
        /// <summary>
        /// Gets the control representing the main view
        /// </summary>
        /// <returns></returns>
        Control GetView();

        /// <summary>
        /// Gets the sub-items associated with this one
        /// </summary>
        /// <returns></returns>
        IEnumerable<ICheckListItem> GetChildren();

        /// <summary>
        /// Evaluates the check list item state based on a context
        /// </summary>
        /// <param name="clinicalContext"></param>
        /// <returns></returns>
        CheckListItemState EvaluateContext(IClinicalContext clinicalContext);
    }
}